$(function () {
    $('.btn').click(function () {
        var num = parseInt($(this).attr('value'))
        $('#box').hide()

        // 格子大小
        var w = 0
        // 蛇长度
        var long = 3
        var t;
        // 速度
        var sudu = 0
        // 方向
        // var str = 0

        if (num == 9) { w = 45; sudu = 300 }
        else if (num == 16) { w = 35; sudu = 100 }
        else if (num == 25) { w = 25; sudu = 50 }
        else if (num == 10) { num = 25;w = 30; sudu = 300 }
        else if (num == 20) { w = 40; sudu = 100 }
        else if (num == 30) { w = 25; sudu = 20 }

        // num == 25 ? w = 35 : w = 50;
        var snakes = [];
        var stepX = w;
        var stepY = 0;
        var live = false;
        var isPause = true;
        var food = {};
        var keydown = 'right';


        // 开始
        function kaisi() {
            if (!live) {
                stepX = w;
                stepY = 0;
                keydown = 'right';
                live = true;
                $(".snakes").remove();
                snakes = [];
                gongge()
                drawSnake();
                runs();
                createFood();
            }
            isPause = true;
        }
        kaisi()

        // var rand1 = Random(num)
        // var rand2 = Random(num)

        // 生成宫格
        function gongge() {
            var t = $("<table>").appendTo(".bg");
            t.attr("border", "1");
            for (var i = 0; i < num; i++) {
                var row = $("<tr>").appendTo(t);
                for (var j = 0; j < num; j++) {
                    var cols = $("<td>").appendTo(row);
                    cols.attr({ height: w + "px", width: w + "px" });
                    cols.attr("id", i + "-" + j);
                    // cols.click(function () {
                    //     alert(this.id);
                    // });
                }
            }
            $('.bg').css('width', w * num + 'px')

        }

        // 生成随机数
        // function Random(num) {
        //     var x = Math.ceil(num * 3 / 4);
        //     var y = Math.ceil(num * 1 / 4);
        //     var rand = parseInt(Math.random() * (x - y + 1) + y);
        //     return rand;
        //     // $("#b").html("").append("<div>" + rand + "</div>");
        // }

        // she(rand1, rand2,str)
        // // 蛇
        // function she(rand1, rand2,str) {
        //     $('td').attr('bgColor', '')
        //     for (var i = 0; i < long; i++) {
        //         console.log(strs1(str,rand1, rand2));
        //         strs1(str,rand1, rand2)
        //         rand2 -= i
        //         console.log('rand1:' + rand1);
        //         console.log('rand2:' + rand2);
        //         $('#' + rand1 + '-' + rand2).attr('bgColor', 'red')
        //     }
        // }

        function drawSnake() {        //初始化蛇身体
            var item = '<div class="snakes"></div>'
            for (var i = 0; i < long; i++) {
                $(".bg").append(item)
                $(".snakes").eq(i).css({
                    top: 0,
                    left: w * i
                })
                item1 = {
                    top: 0,
                    left: w * i
                }
                $('.snakes').css('width', w + 'px')
                $('.snakes').css('height', w + 'px')
                snakes.push(item1)
                // console.log(snakes);
            }
        }
        //
        // function strs1(str, rand1, rand2) {
        //     var strs = 0
        //     if (str == 0) {
        //         strs = rand2 + sudu
        //     }
        //     else if (str == 1) {
        //         strs = rand1 + sudu
        //     }
        //     else if (str == 2) {
        //         strs = rand2 - sudu
        //     }
        //     else if (str == 3) {
        //         strs = rand1 - sudu
        //     }
        //     return strs
        // }
        //    run(str)
        // 移动
        function runs() {
            if (live && isPause) {
                for (var i = 0; i < snakes.length - 1; i++) {
                    $(".snakes").eq(i).css({
                        top: snakes[i + 1].top,
                        left: snakes[i + 1].left
                    })
                    snakes[i].top = snakes[i + 1].top
                    snakes[i].left = snakes[i + 1].left
                    // console.log(i);
                }
                var first = snakes.length - 1
                // console.log(snakes);
                $(".snakes").eq(first).css({
                    top: snakes[first].top + stepY,
                    left: snakes[first].left + stepX
                })
                snakes[first].top = snakes[first].top + stepY;
                snakes[first].left = snakes[first].left + stepX;

                if (!isLive(snakes[first].top, snakes[first].left)) {
                    live = false;
                    isPause = false;
                    alert("游戏结束");
                    // window.location.herf('./index.html')
                    window.location.reload([true])
                }
                else {
                    eatFood(snakes[first].top, snakes[first].left);
                    t = setTimeout(function () {
                        runs()
                    }, sudu)
                }
            }
        }
        function eatFood(top, left) {    //是否吃到食物
            console.log();
            // if (top == food.top && left == food.left && left + w == food.left && top + w == food.top) {
            if (top == food.top && left == food.left) {
                var item = '<div class="snakes"></div>'
                snakes.push({ top: top, left: left })
                $(".bg").append(item)
                $(".snakes").last().css({
                    top: top,
                    left: left
                })
                $('.snakes').css('width', w + 'px')
                $('.snakes').css('height', w + 'px')
                createFood();
            }
        }
        function isLive(top, left) {
            if (top >= num * w || top < 0 || left >= num * w || left < 0) {
                return false;
            }
            else {
                for (var i = 0; i < snakes.length - 1; i++) {

                    if (top == snakes[i].top && left == snakes[i].left) {
                        return false;
                        break;
                    }
                }
                return true;
            }
        }

        function createFood() {    //创建食物
            $(".food").remove();
            isCreate = true
            do {
                food = {
                    top: Math.round(Math.random() * (num - 1)) * w,
                    left: Math.round(Math.random() * (num - 1)) * w
                }
                for (var i = 0; i < snakes.length; i++) {
                    if (food.top == snakes[i].top && food.left == snakes[i].left) {
                        isCreate = false;
                        break;
                    }
                    else {
                        isCreate = true;
                    }
                }
            }
            while (!isCreate)
            var foodItem = '<div class="food"></div>'
            $(".bg").append(foodItem);
            $(".food").css({
                top: food.top,
                left: food.left

            })
            $('.food').css('width', w + 'px')
            $('.food').css('height', w + 'px')

        }

        // 上下左右
        $(document).keydown(function (event) {
            clearTimeout(t)
            var e = event || window.event;
            var k = e.keyCode || e.which;
            switch (k) {
                case 37:
                    if (keydown != 'right') {
                        keydown = 'left';
                        stepX = -w;
                        stepY = 0;
                    }
                    break;
                case 38:
                    if (keydown != 'down') {
                        keydown = 'up';
                        stepX = 0;
                        stepY = -w;
                    }
                    break;

                case 39:
                    if (keydown != 'left') {
                        keydown = 'right'
                        stepX = w;
                        stepY = 0;
                    }
                    break;

                case 40:
                    if (keydown != 'up') {
                        keydown = 'down';
                        stepX = 0;
                        stepY = w;
                    }
                    break;
                case 32:
                    // console.log(1);
                    isPause = !isPause;
                    console.log(isPause);
                    break;
            }
            runs()
            return false;
        })
    })
})